﻿namespace HashFoo.Rest.Common
{
    /// <summary>
    /// <see cref="IResource"/> definition that's main purpose is to tell the remote application to do something.
    /// May or may not return a value, but mostly, should not.
    /// </summary>
    public interface ICommand : IResource
    {

    }

    /// <summary>
    /// <see cref="IResource"/> definition that's main purpose is to tell the remote application to do something.
    /// May or may not return a value, but mostly, should not.
    /// </summary>
    /// <remarks>
    /// If the result model is complex, consider using <see cref="IQuery{TResultModel}"/> instead.  Commands should basically on return
    /// if they were successful or not, which can probably be done with the Http response code.
    /// </remarks>
    /// <typeparamref name="TResultModel">
    /// The result model type that the command returns.  If it is complex, consider using <see cref="IQuery{TResultModel}"/> instead.
    /// </typeparamref>
    public interface ICommand<TResultModel> : ICommand
    {

    }
}